//
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// //////////////////////////////////////////////////////////////////////////////


package org.munoz.shared;

import java.util.Comparator;

/**
 * Specification of the suit values for a standard deck of cards.
 */
public enum Suit  {
  CLUBS, DIAMONDS, HEARTS, SPADES;

  public static final Suit[] VALUES = values();
  
  public static final Comparator<Suit> TWO_HIGH_COMPARATOR = new Comparator<Suit>() {    
    @Override
    public int compare(Suit o1, Suit o2) {
      int ord1;
      int ord2;
      
      if (o1 == CLUBS) {
        ord1 = 1;
      } else if (o1 == DIAMONDS) {
        ord1 = 0;
      } else {
        ord1 = o1.ordinal();
      }
      
      if (o2 == CLUBS) {
        ord2 = 1;
      } else if (o2 == DIAMONDS) {
        ord2 = 0;
      } else {
        ord2 = o2.ordinal();
      }
      
      return ord1 - ord2;
    }
  };
  
  public static final Comparator<Suit> DDZ_COMPARATOR = new Comparator<Suit>() {    
    @Override
    public int compare(Suit o1, Suit o2) {
      return 0;
    }
  };

  public Suit getNext() {
    if (this == VALUES[VALUES.length - 1]) {
      return VALUES[0];      
    }
    return values()[ordinal() + 1];
  }

  public Suit getPrev() {
    if (this == VALUES[0]) {
      return VALUES[VALUES.length - 1];      
    }
    return values()[ordinal() - 1];
  }
}
